home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Windows 3-Pak - Disc 3
/
Infomagic - Windows 3-Pak (Disc 3 of 3).iso
/
Application-Suites
/
qvtnet42d.exe
/
Setup.rul
< prev
next >
Wrap
Text File
|
1999-05-26
|
32KB
|
1,095 lines
/*----------------------------------------------------------------------------*\
*
* IIIIIII SSSSSS
* II SS InstallShield (R)
* II SSSSSS (c) 1990-1996, Stirling Technologies, Inc.
* II SS All Rights Reserved.
* IIIIIII SSSSSS
*
*
* This code is intended as a supplement to InstallShield documentation
* and is provided AS IS.
*
*
* File Name: SETUP.RUL
*
* Description: InstallShield Professional Edition
* 32-bit Template One script.
*
*
* Author: InstallShield Corporation Date: 1-10-96
*
* Comments: This template script performs a basic installation to a
* Windows 95 or Windows NT platform. The installation
* includes components: Application Program Files, Sample and
* Template Files, Online Help Files, and Multimedia Tutorial
* Files. With minor modifications, this template can be
* adapted to create new, customized installations.
*
*
*
\*----------------------------------------------------------------------------*/
declare
#include "SDDIALOG.H"
#define SD_SINGLE_DIALOGS 2
#define SD_CONFIRMNEWDIR 1
#define SD_FINISHREBOOT 2
// Constant declarations.
#define SPACE_REQUIRED_TERM 1398784
#define SPACE_REQUIRED_FTP 292864
#define SPACE_REQUIRED_MAIL 960512
#define SPACE_REQUIRED_NEWS 869376
#define SPACE_REQUIRED_GOPHER 67584
#define SPACE_REQUIRED_LPR 57344
#define SPACE_REQUIRED_WEB 1495040
#define SPACE_REQUIRED_SERVERS 332800
#define SPACE_REQUIRED_SENDMAIL 93184
#define SPACE_REQUIRED_SMTP 31744
#define SPACE_REQUIRED_OCX 472064
#define SPACE_REQUIRED_DLL 678912
#define SPACE_REQUIRED_SHARED 4045824
#define APP_NAME "QVT/Net 4.2"
#define PROGRAM_FOLDER_NAME "QvtNet"
#define APPBASE_PATH "Program Files\\QPC\\QvtNet\\"
#define COMPANY_NAME "QPC"
#define PRODUCT_NAME "QvtNet"
#define PRODUCT_VERSION "4.2"
#define DEINSTALL_KEY "QvtNetDeinstKey"
#define UNINSTALL_NAME "QVT/Net"
#define PRODUCT_KEY "Ftp.exe;Term.exe;Mail.exe;SendMail.exe;MailDL.exe;PostNews.exe;NewsDL.exe;ClSend.exe;Web.exe;ViewImg.exe;Gopher.exe;ftpd.exe;rshd.exe;smtpd.exe;popd.exe;lpr.exe;lpd.exe"
// Global variable declarations.
STRING svFolder, svDir, szMsg, szFileSet, szTitle, svUninstLogFile;
STRING svTarget, svShortTarget, svTargetBin, svTargetSys, svTargetData, svDisk;
STRING szProgram, szParam, szTemp, szAppPath;
BOOL bSpaceOk, bWinNT, bPersonalize, bNoPersonalize;
NUMBER bTerminal, bFTP, bMail, bWeb, bLpr;
NUMBER osVer;
NUMBER nDiskSpaceRequired;
NUMBER nResult, nvType, nvSize;
// Function declarations.
prototype SetupScreen();
prototype CheckRequirements();
prototype CalcDiskSpaceRequirements();
prototype CreateRegDBEntries();
prototype RegOcx.RegOcx(BYREF STRING);
program
StartHere:
Disable( BACKGROUND );
// Set installation info., which is required for registry entries.
InstallationInfo( COMPANY_NAME, PRODUCT_NAME, PRODUCT_VERSION, PRODUCT_KEY );
// Set up thr installation screen.
SetupScreen();
Enable( DIALOGCACHE );
// Create a Welcome dialog.
WelcomeDlg:
Disable( BACKBUTTON );
Welcome( "", 0 );
Enable( BACKBUTTON );
// Test target system for proper configuration.
CheckRequirements();
if (bWinNT) then
if (MODE = NORMALMODE) then
szMsg = "QVT/Net 4.2 setup may have to update several system DLLs.\r\n\r\n" +
"Under Windows NT, system DLL updates require administrator privileges.\r\n\r\n" +
"If you do not have administrator privileges,\r\n" +
"this installation may fail!";
MessageBox(szMsg, WARNING);
endif;
endif;
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
if (RegDBGetKeyValueEx("Software\\QPC\\QvtNet\\4.1", "homedir", nvType, svTarget, nvSize) < 0) then
svTarget = TARGETDISK ^ APPBASE_PATH;
endif;
if (RegDBGetKeyValueEx("Software\\QPC\\QvtNet\\4.1", "datadir", nvType, svTargetData, nvSize) < 0) then
svTargetData = "";
endif;
// Ask user for a destination location for the installation.--
GetTargetDirectory:
szMsg = "Setup will install QVT/Net 4.2d in the following directory.\n\n" +
"To install in this directory, click Next.\n" +
"To install in a different directory, click Browse.\n\n" +
"You MUST select a directory on a LOCAL disk!\n\n" +
"Click Cancel to exit the Setup program.";
if ( AskDestPath( "QVT/Net Home Directory", szMsg, svTarget, 0 ) = BACK ) then
goto WelcomeDlg;
endif;
if (ExistsDir(svTarget) != EXISTS) then
if (MODE = SILENTMODE) then
if (CreateDir(svTarget) < 0) then
exit;
endif;
else
nResult = SdConfirmNewDir("Confirm New Directory", svTarget, STYLE_NORMAL);
if (nResult = NO) then
goto GetTargetDirectory;
endif;
if (nResult < 0) then
MessageBox("Unable to create new directory!", SEVERE);
goto GetTargetDirectory;
endif;
endif;
endif;
GetDataDirectory:
szMsg = "Please specify the directory in which QVT/Net DATA FILES will be stored.\n" +
"This includes Terminal configurations, Mail messages, News articles, etc.\n\n" +
"You may select either a LOCAL or a NETWORK drive.";
if (StrLength(svTargetData) < 1) then
svTargetData = svTarget;
endif;
if ( AskDestPath( "QVT/Net Data Directory", szMsg, svTargetData, 0 ) = BACK ) then
goto GetTargetDirectory;
endif;
SelectProgramsToInstall:
bTerminal = TRUE;
bFTP = TRUE;
bMail = TRUE;
bLpr = TRUE;
if (MODE = NORMALMODE) then
if (AskOptions(NONEXCLUSIVE, "Please select the applications to be installed:",
"Terminal", bTerminal,
"FTP Client and Server", bFTP,
"Mail Client and Servers", bMail,
"lpr Client and Server", bLpr) = BACK) then
goto GetTargetDirectory;
endif;
if (bTerminal || bFTP || bMail || bLpr) goto CheckForSufficientDiskSpace;
szMsg = "You have not selected any installation options.\n" + "Would you like to visit the selection panel again?";
if (AskYesNo(szMsg, YES) = YES) goto SelectProgramsToInstall;
exit;
endif;
CheckForSufficientDiskSpace:
// Perform space check of target drive.
GetDisk(svTarget, svDisk);
bSpaceOk = TRUE;
FolderSelection:
svFolder = PROGRAM_FOLDER_NAME;
// Allow user to modify folder name.
if ( SelectFolder( "Folder Selection", svFolder, svFolder ) = BACK ) then
goto GetTargetDirectory;
endif;
PersonalizeOrShare:
bPersonalize = TRUE;
bNoPersonalize = FALSE;
if (MODE = SILENTMODE) then
if (AskYesNo("Should QVT/Net set up separate profiles for each user?", YES) = NO) then
bPersonalize = FALSE;
bNoPersonalize = TRUE;
endif;
else
if (AskOptions(EXCLUSIVE,
"QVT/Net can maintain data separately for each user,\r\nor shared among all users.",
"I would like each user to have their own data", bPersonalize,
"I would like data to be shared among all users", bNoPersonalize) = BACK) then
goto FolderSelection;
endif;
endif;
RegistryStuff:
svTargetBin = svTarget ^ "bin";
svTargetSys = svTarget ^ "System";
// Set the App Paths key for the main program.
szAppPath = svTargetBin + ";" + svTargetSys;
if (RegDBSetItem( REGDB_APPPATH, szAppPath ) < 0) then
if (MODE = SILENTMODE) then
exit;
else
MessageBox("Unable to set application path!", WARNING);
endif;
endif;
if (bTerminal) then
szProgram = svTargetBin ^ "Term.exe";
RegDBSetItem( REGDB_APPPATH_DEFAULT, szProgram );
endif;
if (bFTP) then
szProgram = svTargetBin ^ "Ftp.exe";
RegDBSetItem( REGDB_APPPATH_DEFAULT, szProgram );
szProgram = svTargetBin ^ "ftpd.exe";
RegDBSetItem( REGDB_APPPATH_DEFAULT, szProgram );
szProgram = svTargetBin ^ "rshd.exe";
RegDBSetItem( REGDB_APPPATH_DEFAULT, szProgram );
endif;
if (bMail) then
szProgram = svTargetBin ^ "Mail.exe";
RegDBSetItem( REGDB_APPPATH_DEFAULT, szProgram );
szProgram = svTargetBin ^ "SendMail.exe";
RegDBSetItem( REGDB_APPPATH_DEFAULT, szProgram );
szProgram = svTargetBin ^ "PostNews.exe";
RegDBSetItem( REGDB_APPPATH_DEFAULT, szProgram );
szProgram = svTargetBin ^ "NewsDL.exe";
RegDBSetItem( REGDB_APPPATH_DEFAULT, szProgram );
szProgram = svTargetBin ^ "MailDL.exe";
RegDBSetItem( REGDB_APPPATH_DEFAULT, szProgram );
szProgram = svTargetBin ^ "ViewImg.exe";
RegDBSetItem( REGDB_APPPATH_DEFAULT, szProgram );
szProgram = svTargetBin ^ "smtpd.exe";
RegDBSetItem( REGDB_APPPATH_DEFAULT, szProgram );
szProgram = svTargetBin ^ "popd.exe";
RegDBSetItem( REGDB_APPPATH_DEFAULT, szProgram );
endif;
if (bLpr) then
szProgram = svTargetBin ^ "lpr.exe";
RegDBSetItem( REGDB_APPPATH_DEFAULT, szProgram );
szProgram = svTargetBin ^ "lpd.exe";
RegDBSetItem( REGDB_APPPATH_DEFAULT, szProgram );
endif;
szProgram = svTargetBin ^ "Gopher.exe";
RegDBSetItem( REGDB_APPPATH_DEFAULT, szProgram );
szProgram = svTargetBin ^ "Web.exe";
RegDBSetItem( REGDB_APPPATH_DEFAULT, szProgram );
SetupFilesToTransfer:
szFileSet = "General";
TARGETDIR = svTarget;
// Define the file set.
FileSetBeginDefine( szFileSet );
SetStatusWindow( -1, "Copying program files..." );
CompressGet( "data.z", "*.*", COMP_NORMAL );
//
// First do EXE files
//
TARGETDIR = svTargetBin;
if (bTerminal) then
CompressGet("data.z", "bin\\Term.exe", COMP_UPDATE_DATE);
endif;
if (bFTP) then
CompressGet("data.z", "bin\\Ftp.exe", COMP_UPDATE_DATE);
CompressGet("data.z", "bin\\ftpd.exe", COMP_UPDATE_DATE);
CompressGet("data.z", "bin\\rshd.exe", COMP_UPDATE_DATE);
endif;
if (bMail) then
CompressGet("data.z", "bin\\Mail.exe", COMP_UPDATE_DATE);
CompressGet("data.z", "bin\\MailDL.exe", COMP_UPDATE_DATE);
CompressGet("data.z", "bin\\SendMail.exe", COMP_UPDATE_DATE);
CompressGet("data.z", "bin\\PostNews.exe", COMP_UPDATE_DATE);
CompressGet("data.z", "bin\\NewsDL.exe", COMP_UPDATE_DATE);
CompressGet("data.z", "bin\\smtpd.exe", COMP_UPDATE_DATE);
CompressGet("data.z", "bin\\popd.exe", COMP_UPDATE_DATE);
CompressGet("data.z", "bin\\ClSend.exe", COMP_UPDATE_DATE);
CompressGet("data.z", "bin\\ViewImg.exe", COMP_UPDATE_DATE);
endif;
if (bLpr) then
CompressGet("data.z", "bin\\lpr.exe", COMP_UPDATE_DATE);
CompressGet("data.z", "bin\\lpd.exe", COMP_UPDATE_DATE);
endif;
CompressGet("data.z", "bin\\Gopher.exe", COMP_UPDATE_DATE);
CompressGet("data.z", "bin\\Web.exe", COMP_UPDATE_DATE);
//
// Next, do help files
//
TARGETDIR = svTarget ^ "help";
if (bTerminal) then
CompressGet("data.z", "help\\Terminal.hlp", COMP_UPDATE_DATE);
endif;
if (bFTP) then
CompressGet("data.z", "help\\Ftp.hlp", COMP_UPDATE_DATE);
endif;
if (bMail) then
CompressGet("data.z", "help\\Mail.hlp", COMP_UPDATE_DATE);
endif;
if (bFTP || bMail) then
CompressGet("data.z", "help\\Servers.hlp", COMP_UPDATE_DATE);
endif;
if (bLpr) then
CompressGet("data.z", "help\\lpr.hlp", COMP_UPDATE_DATE);
endif;
CompressGet("data.z", "help\\Web.hlp", COMP_UPDATE_DATE);
//
// If "terminal" has been selected, copy the custom font files
//
if (bTerminal) then
TARGETDIR = svTargetSys;
CompressGet("data.z", "Fonts\\*.*", SHAREDFILE|COMP_UPDATE_DATE);
endif;
//
// Now, do DLL's and OCX's
//
if ((bWinNT) && (osVer < 4)) then
TARGETDIR = WINSYSDIR;
else
TARGETDIR = svTargetSys;
endif;
if (bMail) then
CompressGet( "data.z", "System\\pop3.dll", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\nntp.dll", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\Dunzip32.dll", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\Duzocx32.ocx", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\Dzstat32.ocx", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\ter32.dll", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\hts32.dll", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\vspell32.ocx", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\vspell32.dll", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\American.vtd", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\Qvtnet41.dic", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\Ic32.*", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\Pgrul.ocx", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\Tx*.*", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\Wndtls32.dll", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\Lead32.ocx", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\Lead51n.dll", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\video32.ocx", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\newmail.wav", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\newsdl.wav", COMP_UPDATE_DATE );
endif;
if (bFTP) then
CompressGet( "data.z", "System\\ftpbe.dll", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\complete.wav", COMP_UPDATE_DATE );
endif;
if (bLpr) then
CompressGet( "data.z", "System\\lprbe.dll", COMP_UPDATE_DATE );
endif;
CompressGet( "data.z", "System\\gophbe.dll", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\RegOcx.dll", COMP_UPDATE_DATE );
CompressGet( "data.z", "System\\vcweb32.ocx", COMP_UPDATE_DATE );
TARGETDIR = WINSYSDIR;
CompressGet( "data.z", "Shared\\smtp.dll", COMP_UPDATE_DATE);
CompressGet( "data.z", "Shared\\qvtnet.dll", COMP_UPDATE_DATE );
CompressGet( "data.z", "Shared\\mfc42.dll", SHAREDFILE|COMP_UPDATE_DATE );
CompressGet( "data.z", "Shared\\msvcrt.dll", SHAREDFILE|COMP_UPDATE_DATE );
CompressGet( "data.z", "Shared\\msvcirt.dll", SHAREDFILE|COMP_UPDATE_DATE );
CompressGet( "data.z", "Shared\\mfcans32.dll", SHAREDFILE|COMP_UPDATE_DATE );
CompressGet( "data.z", "Shared\\oc30.dll", SHAREDFILE|COMP_UPDATE_DATE );
CompressGet( "data.z", "Shared\\ole*.dll", SHAREDFILE|COMP_UPDATE_DATE );
FileSetEndDefine( szFileSet );
TransferFiles:
// Prepare InstallShield to record deinstallation information.
DeinstallStart( svTarget, svUninstLogFile, DEINSTALL_KEY, 0 );
RegDBSetItem( REGDB_UNINSTALL_NAME, UNINSTALL_NAME );
// Set up progress indicator and information gauge.
Disable( DIALOGCACHE );
Enable( STATUSDLG );
StatusUpdate( ON, 85 );
// Perform the file set.
SetStatusWindow( 0, "Copying program files..." );
nResult = FileSetPerformEz( szFileSet, 0 );
switch (nResult)
case FS_DONE: // Successful completion.
case FS_CREATEDIR: // Create directory error.
if (MODE = NORMALMODE) then
MessageBox( "Unable to create a directory under " + TARGETDIR + "."+
"Please check write access to this directory.", SEVERE );
endif;
exit;
default: // Group all other errors under default label.
if (MODE = NORMALMODE) then
NumToStr( szTemp, nResult );
MessageBox( "General file transfer error."+
"Please check your target location and try again."+
"\n\n Error Number:"+szTemp +
"\n Related File: "+ERRORFILENAME,
SEVERE );
endif;
exit;
endswitch;
Delay( 1 );
SetRegistryEntries:
SetStatusWindow( 90, "Registering ActiveX Controls...." );
CreateRegDBEntries( );
Delay(2);
// Create program folders and icons.
InstallProgramItems:
SetStatusWindow( 95, "Creating Program Folder and Icons...." );
AppCommand( PROGMAN, CMD_RESTORE );
if (bWinNT) then
ProgDefGroupType(COMMON);
endif;
CreateProgramFolder( svFolder );
if (MODE = NORMALMODE) then
ShowProgramFolder( svFolder, SW_SHOW );
endif;
svShortTarget = svTarget;
LongPathToShortPath(svShortTarget);
Delay(1);
if (bFTP) then
szProgram = svTargetBin ^ "Ftp.exe";
LongPathToQuote( szProgram, TRUE );
if (AddFolderIcon( svFolder, "QVT-FTP", szProgram, svTargetSys, "", 0, "", REPLACE ) < 0) then
if (MODE = NORMALMODE) then
MessageBox("Unable to create 'Ftp' Icon!", WARNING);
endif;
endif;
Delay( 1 );
szProgram = svTargetBin ^ "ftpd.exe";
LongPathToQuote( szProgram, TRUE );
if (AddFolderIcon( svFolder, "ftpd", szProgram, svTargetSys, "", 0, "", REPLACE ) < 0) then
if (MODE = NORMALMODE) then
MessageBox("Unable to create 'FTP Server' icon!", WARNING);
endif;
endif;
Delay( 1 );
szProgram = svTargetBin ^ "rshd.exe";
LongPathToQuote( szProgram, TRUE );
if (AddFolderIcon( svFolder, "rcpd", szProgram, svTargetSys, "", 0, "", REPLACE ) < 0) then
if (MODE = NORMALMODE) then
MessageBox("Unable to create 'RCP Server' icon!", WARNING);
endif;
endif;
Delay( 1 );
endif;
if (bLpr) then
szProgram = svTargetBin ^ "lpr.exe";
LongPathToQuote( szProgram, TRUE );
if (AddFolderIcon( svFolder, "lpr", szProgram, svTargetSys, "", 0, "", REPLACE ) < 0) then
if (MODE = NORMALMODE) then
MessageBox("Unable to create 'lpr' icon!", WARNING);
endif;
endif;
szProgram = svTargetBin ^ "lpd.exe";
LongPathToQuote( szProgram, TRUE );
if (AddFolderIcon( svFolder, "lpd", szProgram, svTargetSys, "", 0, "", REPLACE ) < 0) then
if (MODE = NORMALMODE) then
MessageBox("Unable to create 'lpd' icon!", WARNING);
endif;
endif;
Delay( 1 );
endif;
if (bMail) then
szProgram = svTargetBin ^ "Mail.exe";
LongPathToQuote( szProgram, TRUE );
if (AddFolderIcon( svFolder, "QVT-Mail", szProgram, svTargetSys, "", 0, "", REPLACE ) < 0) then
if (MODE = NORMALMODE) then
MessageBox("Unable to create 'Mail' icon!", WARNING);
endif;
endif;
Delay( 1 );
szProgram = svTargetBin ^ "smtpd.exe";
LongPathToQuote( szProgram, TRUE );
if (AddFolderIcon( svFolder, "smtpd", szProgram, svTargetSys, "", 0, "", REPLACE ) < 0) then
if (MODE = NORMALMODE) then
MessageBox("Unable to create 'SMTP Server' icon!", WARNING);
endif;
endif;
Delay( 1 );
szProgram = svTargetBin ^ "popd.exe";
LongPathToQuote( szProgram, TRUE );
if (AddFolderIcon( svFolder, "popd", szProgram, svTargetSys, "", 0, "", REPLACE ) < 0) then
if (MODE = NORMALMODE) then
MessageBox("Unable to create 'POP3 Server' icon!", WARNING);
endif;
endif;
Delay( 1 );
endif;
if (bTerminal) then
szProgram = svTargetBin ^ "Term.exe";
LongPathToQuote( szProgram, TRUE );
if (AddFolderIcon( svFolder, "QVT-Term", szProgram, svTargetSys, "", 0, "", REPLACE ) < 0) then
if (MODE = NORMALMODE) then
MessageBox("Unable to create 'Terminal' icon!", WARNING);
endif;
endif;
Delay( 1 );
endif;
szProgram = svTargetBin ^ "Gopher.exe";
LongPathToQuote( szProgram, TRUE );
if (AddFolderIcon( svFolder, "Gopher", szProgram, svTargetSys, "", 0, "", REPLACE ) < 0) then
if (MODE = NORMALMODE) then
MessageBox("Unable to create 'Gopher' icon!", WARNING);
endif;
endif;
Delay( 1 );
szProgram = svTargetBin ^ "Web.exe";
LongPathToQuote( szProgram, TRUE );
if (AddFolderIcon( svFolder, "QVT-Web", szProgram, svTargetSys, "", 0, "", REPLACE ) < 0) then
if (MODE = NORMALMODE) then
MessageBox("Unable to create 'QVT-Web' icon!", WARNING);
endif;
endif;
Delay( 1 );
if ((bWinNT) && (osVer < 4)) then
szProgram = WINDIR ^ "UNINST.EXE";
LongPathToShortPath( szProgram );
LongPathToShortPath( svUninstLogFile );
AddFolderIcon( svFolder, "unInstallSHIELD", szProgram + " -f" + svUninstLogFile, WINDIR, "", 0, "", REPLACE );
// szProgram = svShortTarget ^ "README.TXT";
// AddFolderIcon( svFolder, "Readme", szProgram, svTarget, "", 0, "", REPLACE );
else
szProgram = svTarget ^ "Readme.doc";
LongPathToQuote(szProgram, TRUE);
AddFolderIcon( svFolder, "Read Me", szProgram, svTarget, "", 0, "", REPLACE );
endif;
Delay(1);
// Announce setup complete
FinalInstallProcess:
SetStatusWindow( 100, "Installation complete." );
Delay(1);
Disable( STATUSDLG );
if (BATCH_INSTALL = TRUE) then
CommitSharedFiles(0);
endif;
szMsg = "QVT/Net 4.2d Setup is complete!\r\n\r\nYou must restart your machine so that all updates\r\ncan take effect.";
szProgram = "Remove any disks from their drives, and then click\r\n" +
"Finish to complete setup.";
SdFinishReboot("Reboot System", szMsg, SYS_BOOTMACHINE, szProgram, 0);
exit;
/*---------------------------------------------------------------------------*\
*
* Function: SetupScreen
*
* Purpose: This function will set up the screen look. This includes
* colors, fonts, text to be displayed, etc.
*
*
* Input:
*
* Returns:
*
* Comments:
\*---------------------------------------------------------------------------*/
function SetupScreen()
number nDx, nDy;
begin
GetExtents( nDx, nDy );
Enable( FULLWINDOWMODE );
Enable( INDVFILESTATUS );
Enable( BITMAP256COLORS );
SetFont(FONT_TITLE, STYLE_BOLD, "MS Sans Serif");
SetTitle( "QVT/Net 4.2d Setup", 24, WHITE );
SetColor( BACKGROUND, BK_BLUE ); // Dark blue.
SetColor( STATUSBAR, BLUE ); // Bright blue.
SetTitle( "Setup", 0, BACKGROUNDCAPTION ); // Caption bar text.
Enable( BACKGROUND );
Delay( 1 );
end;
/*---------------------------------------------------------------------------*\
*
* Function: CheckRequirements
*
* Purpose: This function will check all minimum requirements for the
* application being installed. If any fail, then the user
* is informed and the installation is terminated.
*
*
* Input:
*
* Returns:
*
* Comments:
\*---------------------------------------------------------------------------*/
function CheckRequirements()
number nvDx, nvDy;
number nvResult;
STRING svResult;
begin
// Check screen resolution.
GetExtents( nvDx, nvDy );
if (nvDy < 480) then
if (MODE = NORMALMODE) then
MessageBox( "This program requires VGA or better resolution.", WARNING );
endif;
exit;
endif;
GetSystemInfo( WIN32SINSTALLED, nvResult, svResult );
if (nvResult = TRUE) then
if (MODE = NORMALMODE) then
MessageBox( "QVT/Net 4.2 will not run under Win32s!", SEVERE );
endif;
exit;
endif;
GetSystemInfo( OS, nvResult, svResult );
if (nvResult = IS_WINDOWSNT) then
bWinNT = TRUE;
GetSystemInfo( WINMAJOR, nvResult, svResult );
osVer = nvResult;
else
bWinNT = FALSE;
osVer = 4;
endif;
end;
//
// Calculate Disk Space Requirements
//
function CalcDiskSpaceRequirements()
begin
nDiskSpaceRequired = SPACE_REQUIRED_SHARED;
nDiskSpaceRequired += SPACE_REQUIRED_TERM;
nDiskSpaceRequired += SPACE_REQUIRED_FTP;
nDiskSpaceRequired += SPACE_REQUIRED_MAIL;
nDiskSpaceRequired += SPACE_REQUIRED_SENDMAIL;
nDiskSpaceRequired += SPACE_REQUIRED_OCX;
nDiskSpaceRequired += SPACE_REQUIRED_GOPHER;
nDiskSpaceRequired += SPACE_REQUIRED_LPR;
nDiskSpaceRequired += SPACE_REQUIRED_SERVERS;
nDiskSpaceRequired += SPACE_REQUIRED_WEB;
nDiskSpaceRequired += SPACE_REQUIRED_DLL;
nDiskSpaceRequired += SPACE_REQUIRED_SMTP;
end;
/*---------------------------------------------------------------------------*\
*
* Function: CreateRegDBEntries
*
* Purpose: This function will create necessary keys and values for
* the sample program.
*
* Input:
*
* Returns:
*
* Comments:
\*---------------------------------------------------------------------------*/
function CreateRegDBEntries()
NUMBER nDx, nDy, nvSize;
STRING szKey[255], szDLL, szOCX, szProgram, svHostDir, szFontDir, szFontFile;
BOOL bFontInstalled;
NUMBER nResult;
NUMBER nvType;
begin
RegDBSetDefaultRoot( HKEY_LOCAL_MACHINE );
// Create PRODUCT_KEY key.
szKey = "Software\\" + COMPANY_NAME + "\\" + PRODUCT_NAME + "\\" + "4.1";
RegDBCreateKeyEx( szKey, "" );
// Create system-wide registry entries for HOMEDIR and DATADIR
RegDBSetKeyValueEx( szKey, "homedir", REGDB_STRING, svTarget, -1 );
RegDBSetKeyValueEx( szKey, "datadir", REGDB_STRING, svTargetData, (-1));
// Create registry entry for PERSONALIZATION
if (bPersonalize) then
RegDBSetKeyValueEx( szKey, "OmitPersonalization", REGDB_NUMBER, "0", (-1));
else
RegDBSetKeyValueEx( szKey, "OmitPersonalization", REGDB_NUMBER, "1", (-1));
endif;
// Create system-wide registry key for APPS
szKey = "Software\\" + COMPANY_NAME + "\\" + PRODUCT_NAME + "\\" + "4.1" + "\\Apps";
if (RegDBKeyExist(szKey) < 0) then
RegDBCreateKeyEx(szKey, "");
endif;
// Create an APPS registry entry for GOPHER
nResult = RegDBGetKeyValueEx(szKey, "gopher", nvType, szProgram, nvSize);
if (nResult < 0 || nvSize < 1) then
szProgram = svTargetBin ^ "Gopher.exe";
RegDBSetKeyValueEx(szKey, "gopher", REGDB_STRING, szProgram, -1);
endif;
// Create the DATA directory
if (ExistsDir(svTargetData) = NOTEXISTS) then
CreateDir(svTargetData);
endif;
// Create a directory for the WEB application
szProgram = svTargetData ^ "Web";
if (ExistsDir(szProgram) = NOTEXISTS) then
CreateDir(szProgram);
endif;
// Register the WEBVIEWER control
if ((bWinNT) && (osVer < 4)) then
ChangeDirectory(WINSYSDIR);
else
ChangeDirectory(svTargetSys);
endif;
szDLL = "RegOcx.DLL";
UseDLL(szDLL);
szOCX = "Vcweb32.ocx";
if (RegOcx(szOCX) != 1) then
if (MODE = NORMALMODE) then
MessageBox("Error on attempt to register Web Viewer OCX!", WARNING);
endif;
endif;
UnUseDLL(szDLL);
// Create directories and registry entries for the TERMINAL application
if (bTerminal) then
szProgram = svTargetData ^ "Terminal";
if (ExistsDir(szProgram) = NOTEXISTS) then
CreateDir(szProgram);
endif;
GetExtents(nDx, nDy);
bFontInstalled = FALSE;
if (bWinNT) then
szKey = "Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts";
else
szKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Fonts";
endif;
szFontDir = svTargetSys;
szFontFile = szFontDir ^ "VTVGA.FON";
RegDBSetKeyValueEx( szKey, "QVT Terminal Font 640x480", REGDB_STRING, szFontFile, -1 );
szFontFile = szFontDir ^ "VTSVGA.FON";
RegDBSetKeyValueEx( szKey, "QVT Terminal Font 800x600", REGDB_STRING, szFontFile, -1 );
szFontFile = szFontDir ^ "VT1024.FON";
RegDBSetKeyValueEx( szKey, "QVT Terminal Font 1024x768", REGDB_STRING, szFontFile, -1 );
if (FindFile(szFontDir, "DECMULTI.TTF", szFontFile) = 0) then
szFontFile = szFontDir ^ "DECMULTI.TTF";
RegDBSetKeyValueEx( szKey, "DEC Multinational", REGDB_STRING, szFontFile, -1 );
endif;
if (FindFile(szFontDir, "DECGRAPH.TTF", szFontFile) = 0) then
szFontFile = szFontDir ^ "DECGRAPH.TTF";
RegDBSetKeyValueEx( szKey, "DEC Special Graphics", REGDB_STRING, szFontFile, -1 );
endif;
szKey = "Software\\" + COMPANY_NAME + "\\" + PRODUCT_NAME + "\\" + "4.1" + "\\Apps";
nResult = RegDBGetKeyValueEx(szKey, "telnet", nvType, szProgram, nvSize);
if (nResult < 0 || nvSize < 1) then
szProgram = svTargetBin ^ "Term.exe";
RegDBSetKeyValueEx(szKey, "telnet", REGDB_STRING, szProgram, -1);
endif;
endif;
// Create directories and registry entries specific to the FTP application
if (bFTP) then
szProgram = svTargetData ^ "Ftp";
if (ExistsDir(szProgram) = NOTEXISTS) then
CreateDir(szProgram);
endif;
szProgram = svTargetData ^ "Ftpd";
if (ExistsDir(szProgram) = NOTEXISTS) then
CreateDir(szProgram);
endif;
szKey = "Software\\" + COMPANY_NAME + "\\" + PRODUCT_NAME + "\\" + "4.1" + "\\Apps";
nResult = RegDBGetKeyValueEx(szKey, "ftp", nvType, szProgram, nvSize);
if (nResult < 0 || nvSize < 1) then
szProgram = svTargetBin ^ "Ftp.exe";
RegDBSetKeyValueEx(szKey, "ftp", REGDB_STRING, szProgram, -1);
endif;
endif;
// Create directories and registry entries specific to the MAIL application
if (bMail) then
szProgram = svTargetData ^ "Mail";
if (ExistsDir(szProgram) = NOTEXISTS) then
CreateDir(szProgram);
endif;
szProgram = svTargetData ^ "News";
if (ExistsDir(szProgram) = NOTEXISTS) then
CreateDir(szProgram);
endif;
szProgram = svTargetData ^ "popd";
if (ExistsDir(szProgram) = NOTEXISTS) then
CreateDir(szProgram);
endif;
szKey = "Software\\" + COMPANY_NAME + "\\" + PRODUCT_NAME + "\\" + "4.1" + "\\Apps";
nResult = RegDBGetKeyValueEx(szKey, "mail", nvType, szProgram, nvSize);
if (nResult < 0 || nvSize < 1) then
szProgram = svTargetBin ^ "Mail.exe";
RegDBSetKeyValueEx(szKey, "mail", REGDB_STRING, szProgram, -1);
endif;
if ((bWinNT) && (osVer < 4)) then
ChangeDirectory(WINSYSDIR);
else
ChangeDirectory(svTargetSys);
endif;
szDLL = "RegOcx.DLL";
UseDLL(szDLL);
szOCX = "Lead32.ocx";
if (RegOcx(szOCX) != 1) then
if (MODE = NORMALMODE) then
MessageBox("Error on attempt to register Imaging OCX!", WARNING);
endif;
endif;
szOCX = "Video32.ocx";
if (RegOcx(szOCX) != 1) then
if (MODE = NORMALMODE) then
MessageBox("Error on attempt to register Video Player OCX!", WARNING);
endif;
endif;
szOCX = "Vspell32.ocx";
if (RegOcx(szOCX) != 1) then
if (MODE = NORMALMODE) then
MessageBox("Error on attempt to register Visual Speller OCX!", WARNING);
endif;
endif;
szOCX = "Duzocx32.ocx";
if (RegOcx(szOCX) != 1) then
if (MODE = NORMALMODE) then
MessageBox("Error on attempt to register Unzipper OCX!", WARNING);
endif;
endif;
szOCX = "Dzstat32.ocx";
if (RegOcx(szOCX) != 1) then
if (MODE = NORMALMODE) then
MessageBox("Error on attempt to register Unzip Status OCX!", WARNING);
endif;
endif;
szOCX = "Pgrul.ocx";
if (RegOcx(szOCX) != 1) then
if (MODE = NORMALMODE) then
MessageBox("Error on attempt to register TX Ruler OCX!", WARNING);
endif;
endif;
szOCX = "Tx4ole.ocx";
if (RegOcx(szOCX) != 1) then
if (MODE = NORMALMODE) then
MessageBox("Error on attempt to register TX Control OCX!", WARNING);
endif;
endif;
UnUseDLL(szDLL);
endif;
end;
#include "SDDIALOG.RUL"